ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã¢ãã«ãæ¢ããæªæã®ããã³ãŒããããŠãŒã¶ãŒãä¿è·ããããã®JavaScriptãµã³ãããã¯ã¹å®è£ ã«çŠç¹ãåœãŠãŸããå®å šãªæ¡åŒµæ©èœéçºã®ããã®ååã課é¡ããã¹ããã©ã¯ãã£ã¹ãçè§£ããŸãããã
ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã¢ãã«ïŒJavaScriptãµã³ãããã¯ã¹å®è£ ã®è©³çް
ãã©ãŠã¶æ¡åŒµæ©èœã¯ããŠã§ããã©ãŠã¶ã«æ©èœã远å ããããšã§ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãšæ©èœæ§ãåäžãããŸããããããå ç¢ãªã»ãã¥ãªãã£å¯Ÿçãè¬ããŠéçºãããªãå Žåãæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ããããããŸãããã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã®éèŠãªã³ã³ããŒãã³ãã¯JavaScriptãµã³ãããã¯ã¹ã§ãããããã¯æ¡åŒµæ©èœã®ã³ãŒãããã©ãŠã¶ã®ã³ã¢æ©èœãåºç€ãšãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããéé¢ããŸãããã®ããã°èšäºã§ã¯ãJavaScriptãµã³ãããã¯ã¹ã®å®è£ ãšéèŠæ§ã«çŠç¹ãåœãŠããã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã¢ãã«ãå æ¬çã«æ¢æ±ããŸãã
ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã©ã³ãã¹ã±ãŒãã®çè§£
ãã©ãŠã¶æ¡åŒµæ©èœã¯ãè€éãªã»ãã¥ãªãã£ç°å¢å ã§åäœããŸãããŠãŒã¶ãŒããŒã¿ãé²èЧ履æŽããŠã§ãããŒãžã®ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããŸãããã®ã¢ã¯ã»ã¹ã«ãããæ©å¯æ å ±ã®çé£ãæªæã®ããã³ãŒãã®æ³šå ¥ããŠãŒã¶ãŒã·ã¹ãã ã®äŸµå®³ã詊ã¿ãæªæã®ããæ»æè ã®æšçãšãªããŸãããããã£ãŠããããã®è åšãããŠãŒã¶ãŒãä¿è·ããããã«ã¯ã匷åãªã»ãã¥ãªãã£ã¢ãã«ãäžå¯æ¬ ã§ãã
äž»èŠãªã»ãã¥ãªãã£åå
ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã¢ãã«ã®èšèšãšå®è£ ãå°ããããã€ãã®åºæ¬çãªã»ãã¥ãªãã£ååããããŸãã
- æå°æš©éã®ååïŒæ¡åŒµæ©èœã¯ãæå³ãããæ©èœãå®è¡ããããã«å¿ èŠãªæå°éã®æš©éã®ã¿ãèŠæ±ããå¿ èŠããããŸãã
- å€å±€é²åŸ¡ïŒæœåšçãªè匱æ§ã®åœ±é¿ã軜æžããããã«ãè€æ°ã®ã»ãã¥ãªãã£å±€ãå®è£ ããŸãã
- å ¥åæ€èšŒïŒå€éšãœãŒã¹ããåä¿¡ãããã¹ãŠã®ããŒã¿ã培åºçã«æ€èšŒããã€ã³ãžã§ã¯ã·ã§ã³æ»æãé²ããŸãã
- å®å šãªéä¿¡ïŒãã¹ãŠã®ãããã¯ãŒã¯ãã©ãã£ãã¯ã§å®å šãªéä¿¡ãã£ãã«ïŒäŸïŒHTTPSïŒã䜿çšããŸãã
- 宿çãªã¢ããããŒãïŒææ°ã®ã»ãã¥ãªãã£ããããšãã°ä¿®æ£ã§æ¡åŒµæ©èœãææ°ã®ç¶æ ã«ä¿ã¡ãŸãã
äžè¬çãªè åšãšè匱æ§
ãã©ãŠã¶æ¡åŒµæ©èœã¯ãããŸããŸãªã»ãã¥ãªãã£è åšã«ãããããŠããŸãã
- ãã«ãŠã§ã¢ã®æ³šå ¥ïŒããŒã¿ãçãã ããäžæ£ãªæäœãå®è¡ãããããããã«ãæ¡åŒµæ©èœã«æªæã®ããã³ãŒããæ³šå ¥ãããŸãã
- ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã°ïŒXSSïŒïŒè匱æ§ãæªçšããŠããŠãŒã¶ãŒã衚瀺ãããŠã§ãããŒãžã«æªæã®ããã¹ã¯ãªãããæ³šå ¥ããŸãã
- ã¯ãªãã¯ãžã£ããã³ã°ïŒãŠãŒã¶ãŒããæ£åœãªèŠçŽ ã«èŠããããæªæã®ãããªã³ã¯ããã¿ã³ãã¯ãªãã¯ããããã«éšããŸãã
- æš©éææ ŒïŒè匱æ§ãæªçšããŠãæ¡åŒµæ©èœãèš±å¯ãããŠãã以äžã®æš©éãååŸããŸãã
- ããŒã¿æŒæŽ©ïŒå®å šã§ãªãã³ãŒãã£ã³ã°ãã©ã¯ãã£ã¹ã«ãããæå³ããæ©å¯æ§ã®é«ããŠãŒã¶ãŒããŒã¿ãå ¬éãããããšã
- ãµãã©ã€ãã§ãŒã³æ»æïŒæ¡åŒµæ©èœã䜿çšãããµãŒãããŒãã£ã©ã€ãã©ãªãäŸåé¢ä¿ã䟵害ãããããšãäŸãã°ãå€ãã®æ¡åŒµæ©èœã§äœ¿çšãããŠãã䟵害ãããåæã©ã€ãã©ãªã¯ãèšå€§ãªæ°ã®ãŠãŒã¶ãŒãå ¬éããå¯èœæ§ããããŸãã
JavaScriptãµã³ãããã¯ã¹ã®åœ¹å²
JavaScriptãµã³ãããã¯ã¹ã¯ãæ¡åŒµæ©èœã®ã³ãŒãããã©ãŠã¶ã®ã³ã¢æ©èœããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããéé¢ãããéèŠãªã»ãã¥ãªãã£ã¡ã«ããºã ã§ããæ¡åŒµæ©èœã³ãŒãã®æ©èœãå¶éããæ©å¯æ§ã®é«ããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¶éããåºç€ãšãªãã·ã¹ãã ãšã®çŽæ¥çãªããåããé²ããŸãã
ãµã³ãããã¯ã¹ã¢ãŒããã¯ãã£
JavaScriptãµã³ãããã¯ã¹ã¯ãéåžžãæ¬¡ã®ã³ã³ããŒãã³ãã§æ§æãããŸãã
- å¶éä»ãå®è¡ç°å¢ïŒæ¡åŒµæ©èœã³ãŒããå¶éãããæš©éã§å®è¡ããããéé¢ãããç°å¢ã
- APIå¶éïŒæ¡åŒµæ©èœã³ãŒããã¢ã¯ã»ã¹ã§ããAPIãšé¢æ°ãžã®å¶éã
- ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒïŒæ¡åŒµæ©èœã³ãŒãããªãœãŒã¹ãèªã¿èŸŒããœãŒã¹ãå¶åŸ¡ããã¡ã«ããºã ã
- ããŒã¿åé¢ïŒæ¡åŒµæ©èœããŒã¿ãšä»ã®æ¡åŒµæ©èœããã©ãŠã¶ã®ã³ã¢ããŒã¿ãšã®åé¢ã
JavaScriptãµã³ãããã¯ã¹ã䜿çšããå©ç¹
JavaScriptãµã³ãããã¯ã¹ã䜿çšããããšã§ãããã€ãã®éèŠãªã»ãã¥ãªãã£äžã®å©ç¹ãåŸãããŸãã
- æ»æå¯Ÿè±¡é åã®åæžïŒæ¡åŒµæ©èœã³ãŒãã®æ©èœãå¶éããããšã§ãæœåšçãªæ»æå¯Ÿè±¡é åãåæžãããæ»æè ãè匱æ§ãæªçšããããšãå°é£ã«ãªããŸãã
- ãã«ãŠã§ã¢ããã®ä¿è·ïŒãµã³ãããã¯ã¹ã¯ãæªæã®ããã³ãŒãããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã®ä»ã®æ©å¯æ§ã®é«ããªãœãŒã¹ã«çŽæ¥ã¢ã¯ã»ã¹ããã®ãé²ããŸãã
- æ¡åŒµæ©èœã®éé¢ïŒãµã³ãããã¯ã¹ã¯æ¡åŒµæ©èœå士ãéé¢ãã䟵害ãããæ¡åŒµæ©èœãä»ã®æ¡åŒµæ©èœã«åœ±é¿ãäžããã®ãé²ããŸãã
- ã»ãã¥ãªãã£äœå¶ã®åäžïŒã»ãã¥ãªãã£å¶éã匷å¶ããããšã«ããããµã³ãããã¯ã¹ã¯ãã©ãŠã¶å šäœã®ã»ãã¥ãªãã£äœå¶ã®åäžã«åœ¹ç«ã¡ãŸãã
JavaScriptãµã³ãããã¯ã¹ã®å®è£ 詳现
JavaScriptãµã³ãããã¯ã¹ã®å ·äœçãªå®è£ ã¯ããã©ãŠã¶ãæ¡åŒµæ©èœãã©ãããã©ãŒã ã«ãã£ãŠç°ãªãå ŽåããããŸããããããããŸããŸãªç°å¢ã«å ±éããããã€ãã®ãã¯ããã¯ãèæ ®äºé ããããŸãã
ã³ã³ãã³ãã»ãã¥ãªãã£ããªã·ãŒïŒCSPïŒ
CSPã¯ãJavaScriptãµã³ãããã¯ã¹ã®éèŠãªã³ã³ããŒãã³ãã§ããããã«ãããæ¡åŒµæ©èœéçºè ã¯ãæ¡åŒµæ©èœã³ãŒããã¹ã¯ãªãããã¹ã¿ã€ã«ã·ãŒããç»åãªã©ã®ãªãœãŒã¹ãèªã¿èŸŒããœãŒã¹ãå¶åŸ¡ã§ããŸãããããã®ãœãŒã¹ãå¶éããããšã«ãããCSPã¯XSSæ»æããã®ä»ã®çš®é¡ã®æªæã®ããã³ãŒãã€ã³ãžã§ã¯ã·ã§ã³ãé²ãã®ã«åœ¹ç«ã¡ãŸãã
å žåçãªCSPããªã·ãŒã¯æ¬¡ã®ããã«ãªããŸãã
script-src 'self' https://example.com; object-src 'none'; style-src 'self' https://example.com; img-src 'self' data:;
ãã®ããªã·ãŒã¯ãã¹ã¯ãªããã¯æ¡åŒµæ©èœèªèº«ã®ãªãªãžã³ïŒ'self'ïŒãšhttps://example.comããã®ã¿èªã¿èŸŒããããšãæå®ããŸãããªããžã§ã¯ãã¯ãã©ã®ãœãŒã¹ãããèªã¿èŸŒããŸããïŒ'none'ïŒãã¹ã¿ã€ã«ã·ãŒãã¯ãæ¡åŒµæ©èœèªèº«ã®ãªãªãžã³ãšhttps://example.comããèªã¿èŸŒããŸããç»åã¯ãæ¡åŒµæ©èœèªèº«ã®ãªãªãžã³ãšdata URLããèªã¿èŸŒããŸãã
æ¡åŒµæ©èœãæ£ããæ©èœããããšãèš±å¯ãã€ã€ãã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ãæå°éã«æããããã«ãCSPããªã·ãŒãæ éã«èšå®ããããšãéèŠã§ããé床ã«å¶éçãªããªã·ãŒã¯æ¡åŒµæ©èœã®æ©èœãæãªãå¯èœæ§ããããé床ã«ç·©ãããªã·ãŒã¯æ¡åŒµæ©èœãæ»æã«å¯ŸããŠè匱ãªãŸãŸã«ããå¯èœæ§ããããŸãã
APIå¶éãšæš©é
ãã©ãŠã¶æ¡åŒµæ©èœãã©ãããã©ãŒã ã¯éåžžãæ¡åŒµæ©èœããã©ãŠã¶ããŠã§ããšå¯Ÿè©±ããããã«äœ¿çšã§ããAPIã»ãããæäŸããŸãããããããã¹ãŠã®APIãåçã§ã¯ãããŸãããäžéšã®APIã¯ä»ã®APIãããæ©å¯æ§ãé«ããå®å šã«äœ¿çšããããã«ã¯ããæ³šæãå¿ èŠã§ããäŸãã°ãæ¡åŒµæ©èœããŠãŒã¶ãŒããŒã¿ã«ã¢ã¯ã»ã¹ãããããŠã§ãããŒãžã®å 容ã倿Žããããå€éšãµãŒããŒãšéä¿¡ãããããããšãèš±å¯ããAPIã¯ãç¹ã«æ©å¯æ§ãé«ãã§ãã
ãããã®æ©å¯æ§ã®é«ãAPIã«é¢é£ãããªã¹ã¯ã軜æžããããã«ããã©ãŠã¶æ¡åŒµæ©èœãã©ãããã©ãŒã ã¯ãã°ãã°ãã®äœ¿çšã«å¶éã課ããŸããæ¡åŒµæ©èœã¯ãç¹å®ã®APIã«ã¢ã¯ã»ã¹ããããã«ç¹å®ã®æš©éãèŠæ±ããå¿ èŠãããå ŽåããããŸãããããã®æš©éã«ããããŠãŒã¶ãŒã¯ã©ã®æ¡åŒµæ©èœãæ©å¯ããŒã¿ãæ©èœã«ã¢ã¯ã»ã¹ã§ããããå¶åŸ¡ã§ããŸããäŸãã°ããŠãŒã¶ãŒã®é²èЧ履æŽã«ã¢ã¯ã»ã¹ãããæ¡åŒµæ©èœã¯ããhistoryãæš©éãèŠæ±ããå¿ èŠããããããããŸããã
æ¡åŒµæ©èœéçºè ã¯ãæ¡åŒµæ©èœã®æ©èœã«å³å¯ã«å¿ èŠãªæš©éã®ã¿ãèŠæ±ããããšãéåžžã«éèŠã§ããäžèŠãªæš©éãèŠæ±ãããšãã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ãå¢å ãããŠãŒã¶ãŒã®ä¿¡é Œãæãªãããå¯èœæ§ããããŸãã
ããã«ãéçºè ã¯äœ¿çšããåAPIã®æœåšçãªã»ãã¥ãªãã£ãžã®åœ±é¿ãèªèãããããã®ãªã¹ã¯ã軜æžããããã®æªçœ®ãè¬ããå¿ èŠããããŸããããã«ã¯ãå ¥åããŒã¿ã®æ éãªæ€èšŒãåºåããŒã¿ã®ãµãã¿ã€ãºãå®å šãªéä¿¡ãã£ãã«ã®äœ¿çšãå«ãŸããå ŽåããããŸãã
ããŒã¿åé¢ãšã¹ãã¬ãŒãž
ããŒã¿åé¢ã¯ãJavaScriptãµã³ãããã¯ã¹ã®ãã1ã€ã®éèŠãªåŽé¢ã§ããããã«ãããããæ¡åŒµæ©èœã«ãã£ãŠä¿åãããããŒã¿ããä»ã®æ¡åŒµæ©èœããã©ãŠã¶ã®ã³ã¢æ©èœããã¢ã¯ã»ã¹ãããªãããšãä¿èšŒãããŸããããã¯ãããŒã¿æŒæŽ©ãæ¡åŒµæ©èœéã®å¹²æžãé²ãã®ã«åœ¹ç«ã¡ãŸãã
ãã©ãŠã¶æ¡åŒµæ©èœãã©ãããã©ãŒã ã¯éåžžãæ¡åŒµæ©èœããµã³ãããã¯ã¹åãããç°å¢ã«ããŒã¿ãä¿åããããã®ã¡ã«ããºã ãæäŸããŸãããã®ããŒã¿ã¯ããã©ãŠã¶ã®ã³ã¢ããŒã¿ãä»ã®æ¡åŒµæ©èœã«ãã£ãŠä¿åãããããŒã¿ãšã¯å¥ã«ä¿åãããŸããäŸãã°ãæ¡åŒµæ©èœã¯Chromeã®chrome.storage APIãŸãã¯Firefoxã®browser.storage APIã䜿çšããŠããµã³ãããã¯ã¹åãããç°å¢ã«ããŒã¿ãä¿åã§ããŸãã
æ¡åŒµæ©èœéçºè ã¯ãæ©å¯ããŒã¿ãä¿åããéã«ãããã®ãµã³ãããã¯ã¹åãããã¹ãã¬ãŒãžã¡ã«ããºã ã䜿çšããããšãéèŠã§ããããã«ãããããŒã¿ãç¡æã¢ã¯ã»ã¹ããä¿è·ãããããšãä¿èšŒãããŸãã
ããŒã¿åé¢ã«å ããŠãä¿åæããã³è»¢éäžã®æ©å¯ããŒã¿ãæå·åããããšãéèŠã§ããããã«ããããµã³ãããã¯ã¹ã䟵害ãããå Žåã§ããããŒã¿ã䟵害ããä¿è·ããããšãã远å ã®ã»ãã¥ãªãã£å±€ãæäŸãããŸãã
äŸïŒã·ã³ãã«ãªãã©ãŠã¶æ¡åŒµæ©èœã®ä¿è·
ãã©ãŠã¶ã®ããŒã«ããŒã«çŸåšã®æéã衚瀺ããã·ã³ãã«ãªãã©ãŠã¶æ¡åŒµæ©èœãèããŠã¿ãŸãããããã®æ¡åŒµæ©èœãä¿è·ããããã«ãæ¬¡ã®æé ãå®è¡ã§ããŸãã
- æš©éã®æå°åïŒæ¡åŒµæ©èœããŠãŒã¶ãŒèšå®ãä¿åããå¿ èŠãããå Žåã«ã®ã¿ããstorageãæš©éãèŠæ±ããŸããå¿ èŠãªãå Žåã¯ããtabsãããactiveTabããªã©ã®äžèŠãªæš©éã®èŠæ±ã¯é¿ããŸãã
- CSPã®å®è£ ïŒã¹ã¯ãªãããšã¹ã¿ã€ã«ãæ¡åŒµæ©èœèªèº«ã®ãªãªãžã³ããã®ã¿èªã¿èŸŒããããã«ã峿 ŒãªCSPããªã·ãŒãèšå®ããŸãã
- å ¥åã®æ€èšŒïŒæ¡åŒµæ©èœããŠãŒã¶ãŒãæé衚瀺ã®å€èгãã«ã¹ã¿ãã€ãºã§ããããã«ããå ŽåãXSSæ»æãé²ãããã«ããŠãŒã¶ãŒå ¥åãæ éã«æ€èšŒããŸãã
- å®å
šãªã¹ãã¬ãŒãžã®äœ¿çšïŒæ¡åŒµæ©èœããŠãŒã¶ãŒèšå®ãä¿åããå¿
èŠãããå Žåã¯ã
chrome.storageãŸãã¯browser.storageAPIã䜿çšããŠããµã³ãããã¯ã¹åãããç°å¢ã«ããŒã¿ãä¿åããŸãã - 宿çãªã¢ããããŒãïŒææ°ã®ã»ãã¥ãªãã£ããããšãã°ä¿®æ£ã§æ¡åŒµæ©èœãææ°ã®ç¶æ ã«ä¿ã¡ãŸãã
課é¡ãšéç
JavaScriptãµã³ãããã¯ã¹ã¯éèŠãªã»ãã¥ãªãã£å±€ãæäŸããŸãããäžèœã§ã¯ãããŸãããèæ ®ãã¹ãããã€ãã®èª²é¡ãšéçããããŸãã
- ãµã³ãããã¯ã¹ãšã¹ã±ãŒãïŒæ»æè ã¯ããµã³ãããã¯ã¹å®è£ ã®è匱æ§ãèŠã€ããŠããã®å¶éãåé¿ããããšããå¯èœæ§ããããŸãã
- APIã®èª€çšïŒAPIå¶éããã£ãŠããéçºè ã¯ã»ãã¥ãªãã£è匱æ§ãå°å ¥ããæ¹æ³ã§APIã誀çšããå¯èœæ§ããããŸããäŸãã°ãåçã«çæãããã³ãŒããå®è¡ããããã«`eval()`ã䜿çšãããªã©ã
- ããã©ãŒãã³ã¹ãªãŒããŒãããïŒãµã³ãããã¯ã¹ã¯ã远å ã®ã»ãã¥ãªãã£å±€ã®ããã«ããçšåºŠã®ããã©ãŒãã³ã¹ãªãŒããŒããããå°å ¥ããå¯èœæ§ããããŸãã
- è€éãïŒå®å šãªãµã³ãããã¯ã¹ã®å®è£ ãšä¿å®ã¯è€éã§ãããå°éçãªå°éç¥èãå¿ èŠã§ãã
ãããã®èª²é¡ã«ãããããããJavaScriptãµã³ãããã¯ã¹ã¯ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã«ãããŠäŸç¶ãšããŠéèŠãªã³ã³ããŒãã³ãã§ãããµã³ãããã¯ã¹ãæ éã«å®è£ ããã³ä¿å®ããããšã§ããã©ãŠã¶ãã³ããŒãšæ¡åŒµæ©èœéçºè ã¯ã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ãå€§å¹ ã«è»œæžã§ããŸãã
å®å šãªæ¡åŒµæ©èœéçºã®ããã®ãã¹ããã©ã¯ãã£ã¹
å ç¢ãªJavaScriptãµã³ãããã¯ã¹ãå®è£ ããããšã«å ããŠãæ¡åŒµæ©èœéçºè ã¯ãæ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã確ä¿ããããã«æ¬¡ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãã¹ãã§ãã
- æå°æš©éã®ååã«åŸãïŒæ¡åŒµæ©èœã®æ©èœã«å³å¯ã«å¿ èŠãªæš©éã®ã¿ãèŠæ±ããŸãã
- 匷åãªå ¥åæ€èšŒãå®è£ ããïŒå€éšãœãŒã¹ããåä¿¡ãããã¹ãŠã®ããŒã¿ã培åºçã«æ€èšŒããã€ã³ãžã§ã¯ã·ã§ã³æ»æãé²ããŸãã
- å®å šãªéä¿¡ãã£ãã«ã䜿çšããïŒãã¹ãŠã®ãããã¯ãŒã¯ãã©ãã£ãã¯ã«HTTPSã䜿çšããŸãã
- åºåããŒã¿ããµãã¿ã€ãºããïŒãŠãŒã¶ãŒã«è¡šç€ºããããã¹ãŠã®ããŒã¿ããµãã¿ã€ãºããXSSæ»æãé²ããŸãã
- eval()ã®äœ¿çšãé¿ããïŒ`eval()`颿°ã¯é倧ãªã»ãã¥ãªãã£è匱æ§ãå°å ¥ããå¯èœæ§ãããããã䜿çšãé¿ããŸãã
- ã»ãã¥ãªãã£ãªã³ã¿ãŒã䜿çšããïŒã»ãã¥ãªãã£ãªã³ã¿ãŒã䜿çšããŠãã³ãŒãå ã®æœåšçãªã»ãã¥ãªãã£è匱æ§ãèªåçã«ç¹å®ããŸããã»ãã¥ãªãã£ã«çŠç¹ãåœãŠããã©ã°ã€ã³ãåããESLintã¯è¯ãéžæè¢ã§ãã
- 宿çãªã»ãã¥ãªãã£ç£æ»ã宿œããïŒæ¡åŒµæ©èœã®å®æçãªã»ãã¥ãªãã£ç£æ»ã宿œããŠãæœåšçãªè匱æ§ãç¹å®ããŠä¿®æ£ããŸãããããã¬ãŒã·ã§ã³ãã¹ãã宿œããããã«ãµãŒãããŒãã£ã®ã»ãã¥ãªãã£äŒæ¥ãéãããšãæ€èšããŠãã ããã
- äŸåé¢ä¿ãææ°ã®ç¶æ ã«ä¿ã€ïŒãã¹ãŠã®ãµãŒãããŒãã£ã©ã€ãã©ãªãšäŸåé¢ä¿ãææ°ã®ã»ãã¥ãªãã£ãããã§ææ°ã®ç¶æ ã«ä¿ã¡ãŸãã
- è匱æ§ãç£èŠããïŒãã©ãŠã¶æ¡åŒµæ©èœãã©ãããã©ãŒã ããã³èªèº«ã®ã³ãŒãã®æ°ããè匱æ§ãç¶ç¶çã«ç£èŠããŸãã
- ã»ãã¥ãªãã£ã¬ããŒãã«è¿ éã«å¯Ÿå¿ããïŒã»ãã¥ãªãã£ã¬ããŒããåãåã£ãå Žåã¯ãè¿ éã«å¯Ÿå¿ããè匱æ§ãä¿®æ£ããããã®æªçœ®ãè¬ããŸãã
- ãŠãŒã¶ãŒãæè²ããïŒãã©ãŠã¶æ¡åŒµæ©èœã®æœåšçãªãªã¹ã¯ãšãããããã身ãå®ãæ¹æ³ã«ã€ããŠãŠãŒã¶ãŒãæè²ããŸããæ¡åŒµæ©èœã®æ©èœãšæš©éã«é¢ããæç¢ºã§ç°¡æœãªæ å ±ãæäŸããŸãã
- 培åºçã«ãã¹ãããïŒè€æ°ã®ãã©ãŠã¶ãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§æ¡åŒµæ©èœããã¹ãããæ£ããå®å šã«æ©èœããããšã確èªããŸãã
æ°ãããã¬ã³ããšå°æ¥ã®æ¹åæ§
ãã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã©ã³ãã¹ã±ãŒãã¯åžžã«é²åããŠããŸããæ°ããè åšãšè匱æ§ãåžžã«çºèŠãããŠããããã©ãŠã¶ãã³ããŒã¯ãã©ãããã©ãŒã ã®ã»ãã¥ãªãã£ãæ¹åããããã«ç¶ç¶çã«åãçµãã§ããŸãããã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã«ãããæ°ãããã¬ã³ããšå°æ¥ã®æ¹åæ§ã«ã¯ã次ã®ãã®ããããŸãã
- ããè©³çŽ°ãªæš©éïŒãã©ãŠã¶ãã³ããŒã¯ããŠãŒã¶ãŒãæ¡åŒµæ©èœã®æ©èœããã詳现ã«å¶åŸ¡ã§ãããããè©³çŽ°ãªæš©éãå°å ¥ããå¯èœæ§ã暡玢ããŠããŸããããã«ã¯ãç¹å®ã®ãŠã§ããµã€ããŸãã¯ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã®ã¿ãèš±å¯ããæš©éãå«ãŸããå¯èœæ§ããããŸãã
- CSPã®åŒ·å¶åŒ·åïŒãã©ãŠã¶ãã³ããŒã¯ãæ»æè ãè¿åããããšãããå°é£ã«ããããã«ãCSPããªã·ãŒã®åŒ·å¶ãæ¹åããäœæ¥ãè¡ã£ãŠããŸãã
- ãã€ãã£ãã³ãŒãã®ãµã³ãããã¯ã¹åïŒäžéšã®æ¡åŒµæ©èœã¯ãç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããã«ãã€ãã£ãã³ãŒãã䜿çšããŸãããã©ãŠã¶ãã³ããŒã¯ãåºç€ãšãªãã·ã¹ãã ã䟵害ããã®ãé²ãããã«ããã®ãã€ãã£ãã³ãŒãããµã³ãããã¯ã¹åããæ¹æ³ã暡玢ããŠããŸãã
- åœ¢åŒæ€èšŒïŒåœ¢åŒæ€èšŒæè¡ã䜿çšããŠãæ¡åŒµæ©èœã³ãŒãã®æ£ãããšã»ãã¥ãªãã£ãæ°åŠçã«èšŒæã§ããŸããããã«ãããåŸæ¥ã®ãã¹ãæ¹æ³ã§ã¯èŠéãããå¯èœæ§ã®ããæœåšçãªè匱æ§ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- è åšæ€åºã®ããã®æ©æ¢°åŠç¿ïŒæ©æ¢°åŠç¿ã䜿çšããŠãæªæã®ããæ¡åŒµæ©èœãæ€åºããçãããåäœãç¹å®ã§ããŸãã
æ¡åŒµæ©èœã»ãã¥ãªãã£ã«é¢ããã°ããŒãã«ãªèæ ®äºé
ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®ãã©ãŠã¶æ¡åŒµæ©èœãéçºããéã«ã¯ãããŸããŸãªå°åãæåã«ãããã»ãã¥ãªãã£ãšãŠãŒã¶ããªãã£ã確ä¿ããããã«ãç¹å®ã®åœéåããã³ããŒã«ã©ã€ãŒãŒã·ã§ã³ã®åŽé¢ãèæ ®ããããšãäžå¯æ¬ ã§ãã
- ããŒã¿ãã©ã€ãã·ãŒèŠå¶ïŒGDPRïŒãšãŒãããïŒãCCPAïŒã«ãªãã©ã«ãã¢ïŒãLGPDïŒãã©ãžã«ïŒãªã©ãäžçäžã®ããŸããŸãªããŒã¿ãã©ã€ãã·ãŒæ³ã«çæããŠãã ããããŠãŒã¶ãŒã«é©çšãããèŠå¶ãéµå®ããŠãã ãããããã«ã¯ãããŒã¿åéæ £è¡ã«é¢ããéææ§ã®ç¢ºä¿ãšããŠãŒã¶ãŒã«ããŒã¿å¶åŸ¡æš©ã®ä»äžãå«ãŸããŸãã
- ã»ãã¥ãªãã£ã¡ãã»ãŒãžã®ããŒã«ã©ã€ãºïŒãã¹ãŠã®ãŠãŒã¶ãŒãæœåšçãªãªã¹ã¯ãçè§£ã§ããããã«ãã»ãã¥ãªãã£é¢é£ã®ã¡ãã»ãŒãžãšèŠåãè€æ°ã®èšèªã«ç¿»èš³ããŠãã ãããéæè¡çãªãŠãŒã¶ãŒãçè§£ããã®ãé£ããå°éçšèªã®äœ¿çšã¯é¿ããŠãã ããã
- æåçæåæ§ïŒç¹å®ã®æåã§æ»æçãŸãã¯äžé©åã§ããå¯èœæ§ã®ããã³ã³ãã³ãã®è¡šç€ºãèšèªã®äœ¿çšã¯é¿ããŠãã ãããããã¯ãæ¿æ²»ã宿ã瀟äŒåé¡ãªã©ã®æ©å¯æ§ã®é«ããããã¯ãæ±ãå Žåã«ç¹ã«éèŠã§ããæ¡åŒµæ©èœã䜿çšãããåå°åã®æåçèŠç¯ãšæåæ§ã培åºçã«èª¿æ»ããŠãã ããã
- åœéåãã¡ã€ã³åïŒIDNïŒïŒIDNã«é¢é£ããæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ã«æ³šæããŠãã ãããããã¯ãæ£èŠã®ãŠã§ããµã€ããšéåžžã«ãã䌌ããã£ãã·ã³ã°ãŠã§ããµã€ããäœæããããã«äœ¿çšãããå¯èœæ§ããããŸããIDNãã¢ã°ã©ãæ»æãããŠãŒã¶ãŒãä¿è·ããããã®å¯Ÿçãå®è£ ããŠãã ããã
- å°åæ³ã®éµå®ïŒæ¡åŒµæ©èœãé åžãããåå°åã§é©çšããããã¹ãŠã®æ³åŸããã³èŠå¶ãéµå®ããŠããããšã確èªããŠãã ãããããã«ã¯ãããŒã¿ãã©ã€ãã·ãŒãæ€é²ãã³ã³ãã³ãå¶éã«é¢é£ããæ³åŸãå«ãŸããå ŽåããããŸãã
äŸãã°ãéèååŒãæ±ãæ¡åŒµæ©èœã¯ãããŸããŸãªåœã«ããããªã³ã©ã€ã³æ±ºæžãšäžæ£é²æ¢ã«é¢é£ããããŸããŸãªèŠå¶ãèæ ®ããå¿ èŠããããŸããåæ§ã«ããã¥ãŒã¹ã³ã³ãã³ããæäŸããæ¡åŒµæ©èœã¯ãããŸããŸãªå°åã®æ€é²æ³ãšã¡ãã£ã¢èŠå¶ã«æ³šæããå¿ èŠããããŸãã
çµè«
JavaScriptãµã³ãããã¯ã¹ã¯ããã©ãŠã¶æ¡åŒµæ©èœã®ã»ãã¥ãªãã£ã¢ãã«ã®éèŠãªã³ã³ããŒãã³ãã§ããæªæã®ããã³ãŒãã«å¯ŸããéèŠãªä¿è·å±€ãæäŸãããŠãŒã¶ãŒã®ã»ãã¥ãªãã£ãšãã©ã€ãã·ãŒã®ç¢ºä¿ã«åœ¹ç«ã¡ãŸãããµã³ãããã¯ã¹ãæ éã«å®è£ ããã³ä¿å®ããããšã«ããããã©ãŠã¶ãã³ããŒãšæ¡åŒµæ©èœéçºè ã¯ã»ãã¥ãªãã£è匱æ§ã®ãªã¹ã¯ãå€§å¹ ã«è»œæžã§ããŸããå®å šã§ä¿¡é Œã§ãããã©ãŠã¶æ¡åŒµæ©èœãæ§ç¯ããã«ã¯ãå®å šãªã³ãŒãã£ã³ã°ãã©ã¯ãã£ã¹ãæ¡çšããææ°ã®ã»ãã¥ãªãã£è åšã«é¢ããæ å ±ãå ¥æããããšãäžå¯æ¬ ã§ãã
ãã©ãŠã¶æ¡åŒµæ©èœã®ã©ã³ãã¹ã±ãŒããé²åãç¶ããã«ã€ããŠãææ°ã®ã»ãã¥ãªãã£ãã¬ã³ããšãã¹ããã©ã¯ãã£ã¹ãåžžã«ææ¡ããŠããããšãéèŠã§ãããã©ãŠã¶ãã³ããŒãæ¡åŒµæ©èœéçºè ããŠãŒã¶ãŒãååããããšã§ãããå®å šã§ä¿¡é Œã§ãããªã³ã©ã€ã³ç°å¢ãåµé ã§ããŸãã